{
 "metadata": {
  "name": "",
  "signature": "sha256:c90b43dea8879d8147fa8b3f4a9cd35a896a21b6418b2ae61ce712725e42bdc0"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Random walks and random stumbles"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Random walks are a gold mine for a wide variety of stochastic theory and practice. They are easy to explain, easy to code, and easy to misunderstand. In this section, we start out with the simplest imaginable random walk and then show how things can go wrong. "
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Let's examine the problem of the one-dimensional random walk. Consider a particle at the origin ($x=0$), with $p$ probability of moving to the right and $q=1-p$ probability of moving to the left. When the particle reaches $x=1$, the experiment terminates. On average, how many steps are required for this to terminate if $p=1/2$? This seems like a reasonable question, doesn't it?\n",
      "\n",
      "The first thing we have to do is establish the conditions under which termination occurs. Thus, we need the probability that the particle ultimately reaches $x=1$. We'll call this probability $P$. On average, how many steps does it make to terminate?\n",
      "\n",
      "This experiment is easy enough to code as shown below:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def walk():\n",
      "     'starting at x=0, step left/right with probability 1/2 until x=1'\n",
      "     x=0\n",
      "     while x!=1:\n",
      "         x+=random.choice([-1,1]) # equi-probable left-right move\n",
      "         yield x"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 1
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Some classical deft reasoning leads to:\n",
      "\n",
      "$$ P = p + q P^2 $$\n",
      "\n",
      "where $p$ is the probability it moves to $x=1$ from $x=0$ on the first try, and $q$ is the probability it does not, but then ultimately makes it back to $x=0$ (with probability $P$) and then again makes it from there to $x=1$, again with probability $P$ (thus, $P^2$). \n",
      "\n",
      "There are two solutions to $P$, $P=1$ and $P=p/(1-p)$. The crossover point is $p=1/2$. This is drawn below."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from __future__ import  division # want floating point division\n",
      "\n",
      "fig,ax=subplots()\n",
      "p = linspace(0,0.5,20)\n",
      "ax.plot(p,p/(1-p),label=r'$p<1/2$',lw=3.)\n",
      "ax.plot([0.5,1],[1,1],label=r'$p > 1/2$',lw=3.)\n",
      "ax.axis(ymax=1.1)\n",
      "ax.legend(loc=0)\n",
      "ax.set_xlabel('$p$',fontsize=16)\n",
      "ax.set_ylabel('$P$',fontsize=16)\n",
      "ax.set_title(r'Probability of reaching $x=1$ from $x=0$',fontsize=16)\n",
      "ax.grid()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nyEjN8hMnTuDKlStlFgsAKCgogJ2dHfbt24c333wT1apVAwAcOXJE8wVYKD8/H59++qlB3VCmGnCX\n831UEl3zqG8OW7dujdq1a+PSpUuaYpGWlmaUz7QxsFgYaMaMGejZsyf+9re/ITQ0FH/++SciIyNR\ns2ZNREREFFt/xYoVKCgogI+PD/bs2YOVK1di2rRpcHR0BAD06NEDa9euRatWreDu7o6tW7fi2LFj\nJT52edvS12uvvYZvv/0Wy5Ytw5tvvokXXnhB680aGhqKsLAw1KlTBx9++KFO26xongwRHR2NTp06\nwc/PD8HBwahbty6ys7Nx8uRJFBQUYM6cOQB0z/X8+fPx7rvvom3btoiIiICLiwsuXbqElJQUzdE8\npjZt2jR0794dffv2xYgRI5CdnY1p06ahbt26ZR4avXnzZowaNQq3bt3C9u3b0bRpUwBi98bRo0eL\nFQsHBweDu6EEE16p2dD3kb6xVSSP+uawUqVKCAwMxA8//IA2bdoAEA+XDgkJKbFbXG48dBbl/xJS\nqVSlruPn54edO3ciJycHAwcORGhoKF577TUcPnwYdevWLbaNhIQE/PTTTwgICMDGjRsxefJkrcMF\nlyxZgt69e2PSpEkIDAzEw4cPERcXV2JM5W2rpNhLei7PL/v4448RGBiIiRMnok2bNggICNBav1+/\nfgDE4+QdHBzKzF1F81QYT3nKek1ef/11/Prrr6hduzbGjBkDPz8/hIWFITU1Fe+++65mPV1z7ePj\ngyNHjqBBgwYYPXo0evbsiQULFmgNhpYUiz65L215t27dsGHDBpw9exYffPABvvzyS0RHR6Nu3bqo\nUaNGqXlydXVFp06dsGDBAkRERGiO5Y+NjcXo0aNLvZ8+/u///g8jR47Et99+i19++QV///vf8fXX\nX5d7P12ef6GKft50eayylheSK49RUVHIzc3FzJkzMW3aNDg5OWHmzJlG274hVIIpfwaQVfr222/x\nz3/+E+np6eWO85DpXL9+HR4eHvj3v/+tOfqLyFRYLEhnaWlpuHjxIkJCQtCuXTts3rxZ6ZBsxpMn\nTxAeHo5u3brB2dkZly5dwrx58/DHH38gNTW12JFxRMbGMQvS2aeffqrpn42JiVE6HJtSqVIlZGVl\nYfTo0bhz5w6qVauGTp06YcuWLSwUJAvuWRARUbk4wE1EROWy2G4ob29vpKSkKB0GEZFF8fLy0nka\n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\n",
       "text": [
        "<matplotlib.figure.Figure at 0x623b2b0>"
       ]
      }
     ],
     "prompt_number": 2
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Average number of steps to termination"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "A straight-forward question to ask is what is the average number of steps it takes to ultimately terminate this random walk? The quick analysis above says that the particle will *ultimately* terminate, but, on average, how many steps are required for this to happen?\n",
      "\n",
      "Unfortunately, the analysis above is not very helpful here because the statement is about the probability of ultimate termination, not the probability of termination *given* a particular point somewhere on the left of the origin.\n",
      "\n",
      "Fortunately, we have all the Python-based tools to experimentally get at this. The following generator describes the $p=1/2$ random walker."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def walk():\n",
      "     'starting at x=0, step left/right with probability 1/2 until x=1'\n",
      "     x=0\n",
      "     while x!=1:\n",
      "         x+=random.choice([-1,1]) # equi-probable left-right move\n",
      "         yield x"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 3
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Let's try generating a realization of this walk."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "random.seed(123) #  set seed for reproducibility\n",
      "\n",
      "s = list(walk()) # generate the random steps\n",
      "\n",
      "fig,ax=subplots()\n",
      "ax.plot(s)\n",
      "ax.set_ylabel(\"particle's x-position\",fontsize=16)\n",
      "ax.set_xlabel('step index k',fontsize=16)\n",
      "ax.set_title('Example of random walk',fontsize=16)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 4,
       "text": [
        "<matplotlib.text.Text at 0x65c41f0>"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nLCJERKTbnxSA+RU3HRY3AAAAAElFTkSuQmCC\n",
       "text": [
        "<matplotlib.figure.Figure at 0x6232e50>"
       ]
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Now, that we're set up, we can generate a whole list of these walks and then average their lengths to estimate the mean of these walks."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "s = [list(walk()) for i in range(50)] # generate 50 random walks\n",
      "len_walk=map(len,s) # lengths of each walk"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 5
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "The following plots out a few of these random walks so we can get a feel of what's going on with the average length."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "fig,ax=subplots()\n",
      "for i in s:\n",
      "    ax.plot(i)\n",
      "ax.set_ylabel(\"particle's x-position\",fontsize=16)\n",
      "ax.set_xlabel('step index k',fontsize=16)\n",
      "ax.set_title('average length=%3.2f'%(mean(len_walk)))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 6,
       "text": [
        "<matplotlib.text.Text at 0x62d7110>"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nQmCC\n",
       "text": [
        "<matplotlib.figure.Figure at 0x636b830>"
       ]
      }
     ],
     "prompt_number": 6
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Now, here's where things get interesting! Fifty samples of the random walk is really not that many, so we'd like to hopefully get a better average by generating a lot more. If you try to generate, say, 1000 realizations, you'd be in for a long wait! This is because some of the random walks are really, really long! Furthermore, this is a **persistent** phenomenon; it's not just a bad draw from the random deck. Even if there is only one really long walk, it seriously distorts the average. It's tempting to conclude that this is just some outlier and get on with it, but **not** doing so will lead us to a very powerful theorem in stochastic processes."
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "To get a better picture of what's going on here, let's re-define our random walker function so we can limit how far it can go and thereby how long we'd have to wait."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def walk(limit=50):\n",
      "     'limited version of random walker'\n",
      "     x=0\n",
      "     while x!=1 and abs(x)<limit:\n",
      "         x+=random.choice([-1,1])\n",
      "         yield x"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 7
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Because we really just want to count the walks, we can save memory by not collecting the individual steps and just reporting the length of the walk."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def nwalk(limit=500):\n",
      "     'limited version of random walker. Only returns length of path, not path itself'\n",
      "     n=x=0\n",
      "     while x!=1 and n<limit:\n",
      "         x+=random.choice([-1,1])\n",
      "         n+=1\n",
      "     return n # return length of walk"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 8
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "len_walk = [nwalk() for i in range(500)] # generate 500 limited random walks"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 9
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "The usual practice would be to draw a histogram (i.e. an approximation of the probability *density*) here, but sometimes the automatic binning makes things hard to see. Instead, a *cumulative* distribution plot is helpful here. The excellent `pandas` module and some very useful data structures for this kind of work."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import pandas as pd\n",
      "from collections import Counter, OrderedDict\n",
      "\n",
      "lw = pd.Series(Counter(len_walk))/len(len_walk)\n",
      "fig,ax=subplots()\n",
      "\n",
      "ax.plot(lw.index,lw.cumsum(),'-o',alpha=0.3)\n",
      "ax.axis(xmin=-10,ymin=0)\n",
      "ax.set_title('Estimated Cumulative Distribution',fontsize=16)\n",
      "ax.grid()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\n",
       "text": [
        "<matplotlib.figure.Figure at 0x1dd2410>"
       ]
      }
     ],
     "prompt_number": 10
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "What's interesting about the above plot is how steep the slope is. For a path length of one (terminating at the first step), we already have 50% of the probability accounted for. By a path-length of 100, we already have about 90% of the probability. The problem is squeezing out the remaining probability mass means computing random walks longer than 500 (our arbitrary limit). We can do all the above steps for higher limits far above 500, but this observation still holds. Thus, the problem with averaging this is that getting more probability further out competes with the lengths of those further paths. For the average to converge, we want to asymptotically get more improbable paths relatively faster than those paths grow!\n",
      "\n",
      "Let's examine the standard deviation of our averages."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def estimate_std(limit=10,ncount=50):\n",
      "    'quick estimate of the standard deviation of the averages'\n",
      "    ws= array([[ nwalk(limit) for i in range(ncount)] for k in range(ncount)])\n",
      "    return (limit,ws.mean(), ws.mean(1).std())\n",
      "\n",
      "for limit in [10,20,50,100,200,300,500,1000]:\n",
      "    print 'limit=%d,\\t average = %3.2f,\\t std=%3.2f'% estimate_std(limit)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "limit=10,\t average = 4.15,\t std=0.55\n",
        "limit=20,\t average = 6.25,\t std=1.08"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "limit=50,\t average = 10.00,\t std=2.36"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "limit=100,\t average = 15.55,\t std=3.52"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "limit=200,\t average = 21.59,\t std=7.20"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "limit=300,\t average = 25.60,\t std=8.70"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "limit=500,\t average = 32.20,\t std=12.71"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "limit=1000,\t average = 47.38,\t std=21.40"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n"
       ]
      }
     ],
     "prompt_number": 11
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "If this were converging, then the standard deviation of the mean (and the mean itself) should start converging as the walk limit increased. This is obviously not happening here."
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Graph-based combinatorial approach"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "So far, we have been looking at this using samples and started suspecting that there is something going on with the convergence of the average. However, this is not uncovering what's going on under the sheets with the convergence of the average. Yes, we've tinkered with varying the sample size, but it could still be the case that there is some much larger sample size out there that would cure all the problems we have so far experienced.\n",
      "\n",
      "The next code-block assembles some drawing utilities on the excellent `networkx` package so we can analyze this problem using graph combinatoric algorithms.\n"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import networkx as nx\n",
      "import itertools as it\n",
      "\n",
      "class Graph(nx.DiGraph):\n",
      "   '''\n",
      "   operations assuming `pos` attribute in nodes to support drawing and\n",
      "   manipulating path lattice.\n",
      "   '''\n",
      "   def draw(self, ax=None,**kwds):\n",
      "      '''\n",
      "      Draw based on `pos` attribute and pass kwds to nx.draw\n",
      "      :param: axes(optional, default is None)\n",
      "      '''\n",
      "      pos = self.get_pos()\n",
      "      node_size=kwds.pop('node_size',200)\n",
      "      alpha=kwds.pop('alpha',0.3)\n",
      "      if ax is None: nx.draw(self,pos=pos,\n",
      "                             node_size=node_size,\n",
      "                             alpha=alpha,\n",
      "                             **kwds)\n",
      "      else:          nx.draw(self,pos=pos,\n",
      "                             node_size=node_size,\n",
      "                             alpha=alpha,\n",
      "                             ax=ax,**kwds)\n",
      "\n",
      "   def get_pos(self,n=None):\n",
      "      '''\n",
      "      n := str name of node\n",
      "      get positions as returned dictionary\n",
      "      '''\n",
      "      pos=dict([( i,j['pos'] ) for i,j in self.nodes(data=True)])\n",
      "      if n is None:\n",
      "         return pos\n",
      "      else:\n",
      "         return pos[n]\n",
      "\n",
      "   def getx(self,x):\n",
      "      return sorted([(i[0],i[1]['val'] ) for i in self.nodes(True) if i[0][0]==x])\n",
      "\n",
      "   def gety(self,y):\n",
      "      return sorted([(i[0],i[1]['val'] ) for i in self.nodes(True) if i[0][1]==y])\n",
      "\n",
      "# functions to allow diagonal lattice walking\n",
      "def diagwalk(level,n):\n",
      "   x = level\n",
      "   y = -level\n",
      "   while y<=1 and x<n+1:\n",
      "      yield (x,y)\n",
      "      x+=1\n",
      "      y+=1\n",
      "\n",
      "def diagwalker(n):\n",
      "   'daisy-chains the individual diagonal walkers'\n",
      "   assert n%2 # odd only\n",
      "   return it.chain(*(diagwalk(i,n) for i in range(n+1)))\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 12
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "This next code-block constructs the lattice graph that we'll explain below."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def construct_graph(level=5):\n",
      "    g=Graph()\n",
      "    g.level = level\n",
      "    g.add_nodes_from([(i,dict(pos=i)) for i in diagwalker(g.level)])\n",
      "    \n",
      "    for x,y in g.nodes():\n",
      "       if y!=1 and x< g.level:\n",
      "          g.add_edge((x,y), (x+1,y-1) )\n",
      "          g.add_edge((x,y), (x+1,y+1) )\n",
      "    \n",
      "    g.node[(0,0)]['val']=1L # long int\n",
      "    for j in diagwalker(g.level):\n",
      "        if j==(0,0): continue\n",
      "        x,y=j\n",
      "        g.node[j]['val']=sum(g.node[k]['val'] for k in g.predecessors(j))\n",
      "    return g\n",
      "g=construct_graph()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 13
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "The figuree below shows a directed graph with the individual pathways the particle can take from $(0,0)$ to a particular end. The notation $(k,j)$ means that at iteration $k$, the particle is at $x=-j$ on the line. For example,  all paths start at $(0,0)$ and there is only one path from $(0,0)$ to $(1,1)$. Likewise, the next terminus is at $(3,1)$, which is the pathway corresponding to reaching $x=1$ in three steps. There is only one path on the digraph that leads here. However, in this case, there are many pathways that are three-steps long, but that do not reach the terminus. For example, $(3,-1)$ is a path that leads to $x=-1$ in three steps.\n",
      "\n",
      "Let's use some of the powerful algorithms in `networkx` to pursue these ideas."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "fig,ax=subplots()\n",
      "fig.set_size_inches((6,6))\n",
      "ax.set_aspect(1)\n",
      "ax.set_title('Directed Path Lattice',fontsize=18)\n",
      "g.draw(ax=ax)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "iVBORw0KGgoAAAANSUhEUgAAAUYAAAF+CAYAAAD+/rMwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl4U2Wi+PFvkibN2ibdS1vaAF2gtEUWi+MC6EUUxvHe\ni1cFr4r7Mv6GWZxxkDszqKOizowjjzPe64ojOG643BkY8MoouIAIDgVKd7pQSre0aZO2abOc3x+Q\nTJu2rGmTNu/neXwem5yc5SX99pyTk0QmSZKEIAiC4CMP9goIgiCEGhFGQRAEPyKMgiAIfkQYBUEQ\n/IgwCoIg+BFhFARB8CPCOMrWr1+PXC5nx44dwV6VEbVixQrk8tB8es2fPx+z2Rzs1QiYcHlOjabQ\nfOaOAZ999hlyudz3X0REBDExMeTl5bFixQq2bds25ONkMpnvv2CpqalhzZo1FBUVjehyznQbMzIy\nBoxlZGQkZrOZu+66i/r6+nNa9vr163nuuefOe92Gs2bNGuRyOd9+++15zae/zz77jEceeYSOjo6z\nui8UnlPjjQjjeVq+fDkbNmzg9ddf54knnuCKK67gs88+4+qrr+bKK68c9ES++eab6enp4dJLLw3S\nGp8I46OPPjriYTyb9w6kpaWxYcMGNmzYwLp16ygsLOTVV1+lsLAQi8Vy1stev349v//978/6ccF0\nrmEMhefUeBMR7BUY62bOnMny5csH3Pa73/2On/3sZ/zud79j2bJlbNmyxXefXC5HpVKddr5ut5u+\nvj40Gk3A19krlN70FB0dPWAc77nnHhISEnj++ed57bXXePDBB896nmN1D+pU/y5D3XemzynhzIk9\nxhEgl8v5zW9+wyWXXMLWrVv58ssvffd5zwft3Llz0G3bt2/nscceY/LkyWg0Gt555x3gxC/DCy+8\nwKxZs9DpdBgMBi6//HI+++yzIZe/adMm5s+fj8lkQqfTkZOTw8qVK3E6naxfv57LL78cgNtuu813\n+LpgwQLf489meQ6Hg5/+9KdMmDABrVZLYWEhH3/8cQBGEa688koAqqqqAPj444+54YYbmDRpElqt\nFpPJxKJFiwaMJZw4NN+5cyc1NTUDDtH9pzt+/DjLli0jJiYGnU7HVVddRUVFRUDW3au0tJT777+f\n3NxcoqKi0Ol0zJ49m1deeWXAdCtWrODRRx8FwGw2+9b5kUceGfY+721DPacA+vr6ePrpp5kxYwY6\nnQ6j0cicOXP4wx/+MGC6jo4OHnroIaZMmYJarSYhIYHly5dTXV0d0LEYS8Qe4wi64447+OKLL9i8\neTMXX3zxaad/8MEHcblc3HPPPURFRZGTkwOcOFR66623+I//+A/uuOMOHA4HGzduZOHChbz//vtc\nc801vnmsXr2aJ598ktzcXH784x+TnJxMZWUl77//Po899hjz5s3j4Ycf5oknnuCee+7xHX4lJib6\n5nE2y1u2bBkfffQR3/ve91i0aBGVlZUsXboUs9l83nts3kjFxcUB8Prrr2O1WlmxYgWpqanU19fz\n8ssvc8UVV/Dpp59yySWXAPDcc8+xatUqWltbBxxOT5061ff/drudyy67jIsuuognn3ySI0eO8Nxz\nz3Httddy6NChgL1wtGPHDj7//HO+973vYTab6erq4p133uGuu+6ipaWFn//85wDce++92Gw2Pvjg\nA37/+9/7tjk/Px+73T7sfcPp6+tj0aJF7Nixg0WLFnHLLbegVqs5cOAAH3zwAd///veBE1H8zne+\nw9GjR7njjjvIzc2loaGBP/7xjxQWFrJ3714mTpwYkLEYUyThnHz66aeSTCaTfvvb3w47zb59+ySZ\nTCZdd911vttee+01SSaTSTt27Bh0W05OjtTT0zNgHu+//74kk8mkl19+ecDtLpdLmj17tmQ2m323\nff3115JMJpOuuOIKqbe397Tr/vrrrw+672yWt23bNkkmk0m33XbbgGk//PBDSSaTSXK5fNh16C89\nPV2aOnWq1NraKrW0tEhHjhyRXn31VSk6OlpSqVRScXGxJEmS1NXVNeixTU1NUlxcnLR48eIBt8+b\nN2/AuvrfJ5PJpGeeeWbA7c8884wkk8mkbdu2nXadf/WrX0kymUzat2/fKacbap09Ho80f/58KTo6\nWnI6nYPmWVtbO+zyhrpvqOfUU089JclkMmn16tVDLt/rBz/4gaTVaqUDBw4MmKa2tlaKioqSVqxY\nccrtG6/EofQIioqKAqCzs/OMpr/vvvtQq9UDbtuwYQMGg4Hvfe97tLa2+v5rb2/nu9/9LjU1NVRW\nVgKwceNGAJ588slzPud0Nsv78MMPAfjpT386YB7XXnstWVlZZ7Xc0tJS4uPjSUhIYPLkydxxxx0k\nJCTw0UcfMW3aNAC0Wq1vervdjsViQS6Xc+GFF/L111+f1fIUCgU/+MEPBtzmPZ3g3b5A6L/ODocD\n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\n",
       "text": [
        "<matplotlib.figure.Figure at 0x927cef0>"
       ]
      }
     ],
     "prompt_number": 14
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "The lattice diagram above shows the potential paths to termination for the random walk. For example, the all paths that lead to the node labeled (5,1) are those paths that take exactly five steps to terminate. Note that this is a directed graph so the graph can only be tranversed in the direction of the arrows (arrowheads denoted by thick ends as shown). Fortunately, `networkx` has powerful tools for computing these paths as shown in the following."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "l5=list(nx.all_simple_paths(g,(0,0),(5,1)))\n",
      "for i in l5:\n",
      "    print i\n",
      "\n",
      "fig,ax=subplots()\n",
      "fig.set_size_inches((6,6))\n",
      "g.draw(ax,with_labels=0)\n",
      "g.subgraph(l5[0]).draw(ax=ax,with_labels=1,node_color='b',node_size=700)\n",
      "g.subgraph(l5[1]).draw(ax=ax,with_labels=1,node_color='b',node_size=800)\n",
      "ax.set_title('Pathways that terminate in five steps',fontsize=16)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "[(0, 0), (1, -1), (2, 0), (3, -1), (4, 0), (5, 1)]\n",
        "[(0, 0), (1, -1), (2, -2), (3, -1), (4, 0), (5, 1)]\n"
       ]
      },
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 15,
       "text": [
        "<matplotlib.text.Text at 0x92919f0>"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nKQ6LFi3if//3f1Gr1aGe9rRp04iMjOSuu+5Cr9dzxhlnhOI7nc5eiyvWrFlDbW0tY8aM6RFuMpm4\n/PLLWb58OXa7ncsuu4yoqKg+86XValm4cCE33XQT3/72tw8r4Id6XE6ns9/0DsehOvt6Hbe3t/Pv\nf/+7R/0cuo7L5TqqdPV6fa/eNMA555zDpk2bmDBhAhEREcec3+FioG0xMjKSuXPnsnPnTv70pz+N\nmAfT0XDllVdy33338dZbb/HKK69w8cUX97h35557Lg8//DAdHR093lCPFbPZzPe+9z0+//xz/vrX\nv4bCB6M+A4EAb7zxBpdcckko7LXXXiM7O5u0tLRe8XNzc7n//vt55pln2LNnz3GX6Vg5qQTcbDZz\n+umn88gjj5Camkp8fDzPPfdcaMzq60yYMIH169fz3nvvkZycTGJiItnZ2YdN/5uvRgsXLsTn87Fu\n3TpuvfVWoHscdd68efznP/9h/vz5PXzI5557Lo8//jhXX301V199Nfv37+e+++4jPT29z9eun/70\np/z1r39FUZReT/RnnnmG9evXc95555GRkUFraysPPvgg6enpoXHNvpg4cSIAjzzyCOeccw5qtZrp\n06cfttxf54wzziA6OpobbriBu+++G7vdzn333UdiYiI2my0ULzk5mfj4eFauXMnkyZMxGo2MHj26\n1yv81/P11FNP8frrrzN69Giio6PJy8vjnnvuoaioiHnz5vGzn/2M7Oxs2tvbKS0t5eDBg4O2cvTr\nHOkV+GhekQejLT766KPMmzePs88+mx/+8IekpKTQ2trK9u3bCQaDPPjgg8ddxhNJbm4uM2fO5JZb\nbqGhoaFXj3f+/PlcdtllfPe73+XGG29kxowZqFQqqqqq+OCDD3jooYfIzc3tM+1rr72W6OhoTj/9\ndJKSkti/fz8vv/xyj7mMwahPk8nEzTffTGtrK2PHjmXlypWsXr2aF154AeheaXzmmWdyxRVXkJ+f\nj1ar5d///jft7e2cddZZJ6BW+2H45k+Pneeff16oVKpeNsKvU1VVJc4991xhMplEUlKS+PnPfy7e\ne+89oVKpQrYyIbotfnPnzhVGo7GXD7yvlZhXX321GDVqVK/rpaSkCJ1O18Np8qc//UmoVKoes/OH\neOKJJ8SoUaOEwWAQRUVFYvXq1WLBggW93B+HyM3NFUVFRb3CN23aJC666CKRmZkZ8qB+73vfE/v3\n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\nrkJggg==\n",
       "text": [
        "<matplotlib.figure.Figure at 0x92a00b0>"
       ]
      }
     ],
     "prompt_number": 15
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "The figure shows the two pathways that terminate in five steps. The other fact we need is how many pathways do *not* terminate in five steps, then we'll be on our way to computing a probability. Fortunately, we already have this built into our initial graph construction."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "for i in g.getx(5):\n",
      "    print 'node (%d,%d)\\t'%(i[0]),\n",
      "    print 'number of paths = %d'%(i[1])"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "node (5,-5)\tnumber of paths = 1\n",
        "node (5,-3)\tnumber of paths = 4\n",
        "node (5,-1)\tnumber of paths = 5\n",
        "node (5,1)\tnumber of paths = 2\n"
       ]
      }
     ],
     "prompt_number": 16
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Now, we can compute the conditional probability of terminating in five steps as simply:\n",
      "\n",
      "$$ \\mathbb{P}(5|\\hat{3},\\hat{1})  = \\frac{\\text{no. paths to (5,1)}}{\\text{total no. of paths of length 5}}$$\n",
      "\n",
      "This is a conditional probability because the only way to terminate in five steps is to not have terminated at step 1 or 3, which is emphasized by the hat on top of those digits in the above equation. To compute the unconditional probability, we need to account for \n",
      "\n",
      "$$ \\mathbb{P}(\\hat{3},\\hat{1}) =  \\mathbb{P}(\\hat{3}|\\hat{1}) \\mathbb{P}(\\hat{1})$$\n",
      "\n",
      "by computing this recursively,\n",
      "\n",
      "$$ \\mathbb{P}(\\hat{3}|\\hat{1}) = 1- \\mathbb{P}({3}|\\hat{1}) $$\n",
      "\n",
      "where $\\mathbb{P}(\\hat{1})=1/2$. Plugging and chugging with the above result gives\n",
      "\n",
      "$$ \\mathbb{P}(5) = \\frac{1}{16} $$\n",
      "\n",
      "Because this is tedious to do by hand, we can automate this entire process as shown below."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import operator as op\n",
      "\n",
      "def get_cond_prob(g):\n",
      "   'compute conditional probability for later' \n",
      "   cp = OrderedDict()\n",
      "   for i,j in g.gety(1):\n",
      "      if (i[0],-i[0] ) not in g: continue\n",
      "      cp[i[0]] = g.node[i]['val']/sum(map(op.itemgetter(1),g.getx(i[0])))\n",
      "   return cp\n",
      "\n",
      "def get_prob(g,cp=None):\n",
      "   'get unconditional probability of termination '\n",
      "   prob = OrderedDict()\n",
      "   cq = OrderedDict()\n",
      "   if cp is None: cp = get_cond_prob(g)\n",
      "   for i,j in cp.iteritems(): cq[i]=1-j\n",
      "   prob[1]=  0.5  # initial condition\n",
      "   for i in cp.keys():\n",
      "      prob[i]= cp[i]*prod(cq.values()[:(i-1)//2][::-1])\n",
      "   return prob\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 17
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "The following quick check matches the result we computed earlier for termination in exactly five steps."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "g=construct_graph(15)\n",
      "p=get_prob(g)\n",
      "print 'prob of termination in 5 steps = ',p[5]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "prob of termination in 5 steps =  0.0625\n"
       ]
      }
     ],
     "prompt_number": 18
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "The following plot shows the probability of termination for each number of steps."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "fig,ax=subplots()\n",
      "ax.axis(ymax=1)\n",
      "ax.plot(p.keys(),p.values(),'-o')\n",
      "ax.set_xlabel('exact no. of steps to terminate',fontsize=18)\n",
      "ax.set_ylabel('probability',fontsize=18)\n",
      "ax.axis(ymax=.6)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 19,
       "text": [
        "(0.0, 16.0, 0.0, 0.6)"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\n",
       "text": [
        "<matplotlib.figure.Figure at 0x95ae5b0>"
       ]
      }
     ],
     "prompt_number": 19
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Thus, we have a computational method for computing the probability of terminating in a given number of steps. What we need now is a separate analytical result that confirms our work so far. This is where the book by Feller comes in (Feller, William. *An Introduction to Probability Theory and Its Applications: Volume One*. John Wiley & Sons, 1950.)."
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Using Generating Functions (Feller, Vol I, p. 271)"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "In random walk terminology, the probability that first visit to $x=1$ takes place at the nth step is denoted as $\\phi_n$. Furthermore, the generating function is defined as:\n",
      "\n",
      "$$ \\Phi(s) = \\sum_{n=0}^\\infty \\phi_n s^n$$\n",
      "\n",
      "we will need two other random variables. $N$ is the first time that the particle reaches $x=1$. This is a random variable with probability $\\phi_n$. Likewise, $N_1$ is the number of trials required to move the particle from anywhere to the left of $x=-1$ to $x=0$. Also, $N_2$ is the number of trials required to move  the particle from $x=0$ to $x=1$. Now, here comes the key step: these three random variables are independent with the same probability distribution. With these definitions, we have\n",
      "\n",
      "$$ N = 1 + N_1 + N_2$$\n",
      "\n",
      "In other words, you need $N_1$ trials to make it from wherever the particle was on the left of the origin back to the origin; and then you need $N_2$ trials to make it from there to $x=1$. The first $1$ accounts for the first step to the left from the origin. Thus we have,\n",
      "\n",
      "$$ \\mathbb{E}(s^N|X_1=-1) = \\mathbb{E}(s^{1 + N_1 + N_2}|X_1=-1)  = s\\Phi(s)^2$$\n",
      "\n",
      "where we can multiply through because of the mutual independence of the random variables. Additionally,\n",
      "\n",
      "$$ \\mathbb{E}(s^N|X_1=1) = s $$\n",
      "\n",
      "because $N_1 = N_2 = 0$ in this case. Unwinding the conditional expectation yields,\n",
      "\n",
      "$$\\mathbb{E}(s^N) =  \\mathbb{E}(s^N|X_1=1) p +  \\mathbb{E}(s^N|X_1=-1) q $$\n",
      "\n",
      "Writing this out yields,\n",
      "\n",
      "$$ \\Phi(s) = p s + s \\Phi(s)^2 (1-p)  $$\n",
      "\n",
      "This is a quadratic equation in $\\Phi(s)$, so we have two solutions:\n",
      "\n",
      "$$ \\Phi_1(s) = \\frac{-1-\\sqrt{1+4 (p-1) p s^2}}{2 s(p -1 )} $$\n",
      "\n",
      "and\n",
      "\n",
      "$$ \\Phi_2(s) = \\frac{-1+\\sqrt{1+4 (p-1) p s^2}}{2 s(p -1 )} $$\n",
      "\n",
      "How do we pick between them? The limit of $ \\Phi_2(s) $ is unbounded as $s \\rightarrow 0$. Thus, $\\Phi(s=1) = \\Phi_1(s=1)$.\n",
      "\n",
      "One of the properties of the $\\Phi$ function is that $\\Phi(s=1)$ should sum to one. In this case, we have\n",
      "\n",
      "$$ \\Phi(s=1) = \\Phi_1(s=1)= \\frac{1-|p-q|}{2 q}$$\n",
      "\n",
      "Thus, if $p < q$, we have \n",
      "\n",
      "$$ \\sum \\phi_n =  p/q$$\n",
      "\n",
      "which doesn't equal one. The problem here is that the definition of the random variable $N$ only considered the conclusion that the particle would ultimately reach $x=1$. The other possibility, which accounts for the missing probability here, is that the particle *never* terminates. Similarly, when $ p \\ge q $, we have\n",
      "\n",
      "$$ \\sum \\phi_n =  1$$\n",
      "\n",
      "This should be no surprise because we saw this exact same result when we first started investigating this! Namely, $p \\ge q \\implies p \\ge 1/2$, which is what we concluded from our first plot. This is the situation where the particle *always* terminates.\n",
      "\n",
      "The first derivative of $\\Phi(s)$ function evaluated at $s=1$ is the mean. Thus,\n",
      "\n",
      "$$\\bar{N} = \\mathbb{E}(N) = \\Phi'(s=1)= -\\left( \\frac{-1 + 4\\,p\\,q + {\\sqrt{1 - 4\\,p\\,q}}} {-2\\,q + 8\\,p\\,q^2} \\right) $$\n",
      "\n",
      "Note that this is unbounded when $p=1/2$ which is exactly what we have been observing experimentally. \n",
      "\n",
      "To get at the individual probabilities for $p=1/2$, we can use a power series expansion on\n",
      "\n",
      "$$ \\Phi(s)\\bigg|_{p=1/2}=-\\left( \\frac{-1 +       {\\sqrt{1 - s^2}}}{s}    \\right)$$\n",
      "\n",
      "Using the binomial expansion theorem, this gives\n",
      "\n",
      "$$\\phi_{2k-1} = (-1)^{k-1} \\binom{1/2}{k} $$"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Now, we can try this formula out against our graph construction and see if it matches. The downside is that `scipy.misc.comb` cannot handle fractional terms, so we need to use `sympy` instead, as shown below."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import sympy\n",
      "\n",
      "# analytical result from Feller\n",
      "pfeller = dict([(2*k-1,sympy.binomial(1/2,k)*(-1)**(k-1)) for k in range(1,10)])\n",
      "\n",
      "for k,v in p.iteritems():\n",
      "    assert v==pfeller[k] # matches every item!"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 20
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Now that we know exactly why the mean does not converge for $p=1/2$, let's check the calculation for when we know it does converge, say, for $p=2/3$. In this case the average number of steps to terminate is\n",
      "\n",
      "$$ \\mathbb{E}(N)\\bigg|_{p=2/3} = 3 $$\n",
      "\n",
      "The code below redefines our earlier code for this case."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def nwalk(limit=500):\n",
      "     'p=2/3 version of random walker. Only returns length of path'\n",
      "     n=x=0\n",
      "     while x!=1 and n<limit:\n",
      "         x+=random.choice([-1,1,1]) # twice as many 1's as before\n",
      "         n+=1\n",
      "     return n # return length of walk"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 21
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "mean([nwalk() for i in range(100)])"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 22,
       "text": [
        "3.2999999999999998"
       ]
      }
     ],
     "prompt_number": 22
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "for limit in [10,20,50,100,200,300,500,1000]:\n",
      "    print 'limit=%d,\\t average = %3.2f,\\t std=%3.2f'% estimate_std(limit,100)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "limit=10,\t average = 2.50,\t std=0.26\n",
        "limit=20,\t average = 2.83,\t std=0.39"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "limit=50,\t average = 2.95,\t std=0.52"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "limit=100,\t average = 2.96,\t std=0.43"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "limit=200,\t average = 3.02,\t std=0.55"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "limit=300,\t average = 2.96,\t std=0.48"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "limit=500,\t average = 3.03,\t std=0.49"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "limit=1000,\t average = 3.02,\t std=0.52"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n"
       ]
      }
     ],
     "prompt_number": 23
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Notice that the standard deviation of the average did not change much as the limit increased. This did not happen earlier with $p=1/2$. Now we know why."
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Summary"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "In this long post, we thoroughly investigated the random walk and the lack of convergence in the average we noted when equiprobable steps are used. We then pursued this using both computational graph methods as well as analytical results. It's important to reflect on what would have happened if we had not noticed the strange convergence of the equiprobable case. Most likely, we would have just ignored it as some kind of sampling problem that is cured asymptotically. However, that did not happen here, and this kind of thing is easy to miss in real problems that have not been so heavily studied as the random walk. Thus, the moral of the story is that it pays to have a wide variety of analytical and computational tools (e.g. from the scientific Python stack) available, and to use both of them in tandem to chase down strange results, however mildly unexpected. Furthermore, concepts that sit at the core of more elaborate methods should be understood, or at least characterized as carefully as possible, because once these bleed into complicated meta-models, it may be impossible to track the resulting errors down to the source.\n",
      "\n",
      "As usual, the source notebook for this post is available [here](https://github.com/unpingco/Python-for-Signal-Processing)"
     ]
    }
   ],
   "metadata": {}
  }
 ]
}